
import { getUserInfo, login, register, getUserPermissions } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
export default {
  namespaced: true,
  state: {
    token: getToken(), // 声明变量保存token
    userInfo: {}, // 声明变量保存用户信息
    userPermissions: {} // 用户当前权限信息
  },
  mutations: {
    SET_TOKEN(state, token) {
      state.token = token
      setToken(token)// 数据持久化
      // 保存登录的时间戳
      localStorage.setItem('loginTime', Date.now())
    }, // 保存好用户信息
    SET_USERINFO(state, userInfo) {
      state.userInfo = userInfo
    }, // 移除token
    removeToken(state) {
      state.token = ''
      // 清除缓存
      removeToken()
    },
    // 清除用户信息
    removeUserInfo(state) {
      state.userInfo = {}
    },
    // 删除token
    REMOVE_TOKEN(state) {
      state.token = null
      removeToken()
    },
    // 删除用户信息与删除用户权限信息
    REMOVE_INFO(state) {
      state.userInfo = {}
      state.userPermissions = {}
    },
    // 保存好用户信息
    SET_USERINFO(state, userInfo) {
      state.userInfo = userInfo
    },
    // 保存用户权限
    SET_Permission(state, userPer) {
      state.userPermissions = userPer
    }
  },
  actions: {
    // actions中的函数默认能够接受一个参数 这个参数就相当于 实例化的store对象
    async login(store, loginForm) {
      const res = await login(loginForm)
      // 保存token
      store.commit('SET_TOKEN', res.data.jwt)
    },

    async register(store, registerForm) {
      const res = await register(registerForm)
      // 保存token
      console.log('注册成功', res)
    },
    async getUserInfo(store) {
      // 获取用户信息
      const res = await getUserInfo()
      console.log(12, res)
      store.commit('SET_USERINFO', res)
    },
    // 退出登录
    logout(store) {
      store.commit('removeToken')
      store.commit('removeUserInfo')
    },
    // 刷新页面的时候获取用户信息
    async getUser(store) {
      const res = await getUserInfo()
      const result = await getUserPermissions()
      store.commit('SET_USERINFO', res.data)
      store.commit('SET_Permission', result.data)
    }
  }
}

